TODO list

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • tokenVocab '++'=33 imported to lexer doesn't define a literal; should it? nah
  • T='++' in tokens{} of combined should go to lexer rule for '++' I guess? nah
  • don't allow actions in fragment rules; they don't exec

  • don't allow -> on more than one alt in lexer rule? same with actions?
  • we need an on-demand input stream so that we can process huge files without storing anything. They have to read and process at the same time. copy code from the lazy version I was starting in that branch.
  • generating unneeded action funcs in lexer
  • don't allow labels or parameters or return values on lexer elements
  • don't allow actions except at right edge
    FOO : X (Y {foo();} | Z {bar();}); silently drops the {foo();} after Y. what is allowed? it's fine to have FOO : X Y {foo();} | X Z {bar();};
  • predicates should be allowed in the lexer.
  • should we allow same token name in multiple modes? seems useful.
  • Using the first ANY_GENERAL rule, it consumes everything. Swapping for the second ANY_GENERAL rule, it works as intended.
  • Code Block
    fragment START_TAG &nbsp;&nbsp;&nbsp;: '<';
    
     fragment WORDCHAR &nbsp;&nbsp;&nbsp;&nbsp;: 'a'..'z' \| 'A'..'Z' \| '0'..'9' \| '_';
    
     TAG_START : START_TAG WORDCHAR\+ { pushMode(IN_TAG); };
    
     ANY_GENERAL : \~START_TAG+;
    
     // ANY_GENERAL : \~'<'+;
    

    I don't understand why they are not doing the same thing?

  • import mode pulls rules into another mode; shares common stuff like WS, ID, etc...

...