summaryrefslogtreecommitdiff
path: root/bcc/state.c
diff options
context:
space:
mode:
authorRobert de Bath <rdebath@poboxes.com>1996-05-31 21:33:17 +0200
committerLubomir Rintel <lkundrak@v3.sk>2013-10-23 23:30:46 +0200
commite85ee07172eccafd9441362e774f7b184810d008 (patch)
tree5dc12259ab7a61b12d9df284fe58ad5cb312c526 /bcc/state.c
parentdcc973ea3e31710429858c99d4f040334ac67c06 (diff)
downloaddev86-e85ee07172eccafd9441362e774f7b184810d008.tar.gz
Import Dev86-0.0.6.tar.gzv0.0.6
Diffstat (limited to 'bcc/state.c')
-rw-r--r--bcc/state.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/bcc/state.c b/bcc/state.c
index cc821e3..36140c2 100644
--- a/bcc/state.c
+++ b/bcc/state.c
@@ -73,6 +73,7 @@ FORWARD void doswitch P((void));
FORWARD void dowhile P((void));
FORWARD void jumptocases P((void));
FORWARD void statement P((void));
+FORWARD void doasm P((void));
/* --- utility routines --- */
@@ -231,6 +232,22 @@ PUBLIC void compound() /* have just seen "{" */
rbrace();
}
+PRIVATE void doasm()
+{
+ lparen();
+ if (sym!=STRINGCONST)
+ error("string const expected");
+ else {
+ nextsym();
+ constant.value.s[charptr-constant.value.s]='\0';
+ outnstr("!BCC_ASM");
+ outnstr(constant.value.s);
+ outnstr("!BCC_ENDASM");
+ rparen();
+ semicolon();
+ }
+}
+
PRIVATE void dobreak()
{
offset_t spmark;
@@ -747,10 +764,14 @@ more:
case SEMICOLON:
nextsym();
return;
+ case ASMSYM:
+ nextsym();
+ doasm();
+ break;
case IDENT:
case TYPEDEFNAME:
blanks(); /* cannot afford nextsym() */
- while (ch == EOL && !eof)
+ while (ch == EOL && !eofile)
{
/* this now fails only on #controls and macros giving ':' */
skipeol();