S-expression
I wonder what the definition of an S-expression is.
Here is the most naive description I reached.
The problem of the above definition is that that accept two sequential S-expressions "(aa) (bb)" as an S-expression. It's curious. I'm becoming aware of that such a syntax rule might not define the S-expression. This means I must write the real lexical analyzer.
Now I use this infantile code with the YACC.
expr: TERM | '(' expr ')' | expr expr ;where the TERM means a sequence of alphabets and/or numbers (and/or symbols except ')' and '(', though I omit these so far).
The problem of the above definition is that that accept two sequential S-expressions "(aa) (bb)" as an S-expression. It's curious. I'm becoming aware of that such a syntax rule might not define the S-expression. This means I must write the real lexical analyzer.
Now I use this infantile code with the YACC.
yylex() { char c; while ((c=getchar())==' ' || c=='\t') ; if (c == EOF) return 0; if (isalnum(c)){ char sbuf[100], *p = sbuf; do { *p++ = c; } while ((c=getchar()) != EOF && isalnum(c)); ungetc(c, stdin); *p = '\0'; printf("%s ", sbuf); return TERM; } if (c == '\n'){ lineno++; return '\n'; } return c; }
0 Comments:
Post a Comment
<< Home