diff options
author | tomsmeding <tom.smeding@gmail.com> | 2016-08-20 13:34:15 +0200 |
---|---|---|
committer | tomsmeding <tom.smeding@gmail.com> | 2016-08-20 13:34:15 +0200 |
commit | eade4187ba0ae04fe8e6eed9a1e33bfd44b73c06 (patch) | |
tree | 0db3dbc7efe1197523f4b7c09f43a4e12b13e9cc /parser.c | |
parent | b477ac27210399b976e70195e92fb13315d39769 (diff) |
Parse comments
Diffstat (limited to 'parser.c')
-rw-r--r-- | parser.c | 33 |
1 files changed, 33 insertions, 0 deletions
@@ -59,6 +59,39 @@ static Token nexttoken(Cursor *cursor){ while(cursor->l>=1&&isspace(*cursor->s))advance(cursor,1); if(cursor->l==0)return tt_eof(); + bool acted; + do { + acted=false; + if(*cursor->s==';'){ + acted=true; + int i; + for(i=1;i<cursor->l;i++){ + if(cursor->s[i]=='\n')break; + } + if(i>=cursor->l-1){ + advance(cursor,cursor->l); + return tt_eof(); + } + advance(cursor,i+1); + } + + if(cursor->l>=4&&cursor->s[0]=='#'&&cursor->s[1]=='|'){ + acted=true; + int i; + for(i=3;i<cursor->l;i++){ + if(cursor->s[i-1]=='|'&&cursor->s[i]=='#')break; + } + if(i>=cursor->l-1){ + advance(cursor,cursor->l); + return tt_eof(); + } + advance(cursor,i+1); + } + } while(acted); + + while(cursor->l>=1&&isspace(*cursor->s))advance(cursor,1); + if(cursor->l==0)return tt_eof(); + if(strchr(SYMBOLCHARS,*cursor->s)!=NULL|| (cursor->l>=2&&cursor->s[0]=='\''&&strchr(SYMBOLCHARS,cursor->s[1]))){ advance(cursor,1); |