libscpi/src/scpi.g
@@ -10,7 +10,7 @@
   
   
programMessageUnit 
   :   WS* programHeader QUESTION? (WS programData (COMMA programData)*)?
   :   WS* programHeader (WS programData (COMMA programData)*)?
   ;
programHeader
@@ -19,11 +19,11 @@
   ;
compoundProgramHeader
   :   COLON? PROGRAM_MNEMONIC (COLON PROGRAM_MNEMONIC)*
   :   COLON? PROGRAM_MNEMONIC (COLON PROGRAM_MNEMONIC)* QUESTION?
   ;
   
commonProgramHeader 
   :   STAR PROGRAM_MNEMONIC
   :   STAR PROGRAM_MNEMONIC QUESTION?
   ;
   
programDataSeparator 
@@ -39,7 +39,7 @@
   |   characterProgramData
   |   decimalNumericProgramData
   |   stringProgramData
//   |   arbitraryBlockProgramData
   |   arbitraryBlockProgramData
   |   expressionProgramData
//   |   suffixProgramData
   ;
@@ -69,7 +69,12 @@
expressionProgramData
   :    PROGRAM_EXPRESSION
   ;
   ;
// support only nonzero prefix
arbitraryBlockProgramData
   :   SHARP NONZERO_DIGIT NUMBER .*
   ;
      
PROGRAM_MNEMONIC   :    ALPHA (ALPHA | DIGIT | UNDERSCORE)*;
HEXNUM         :   SHARP H HEXDIGIT*;
@@ -108,6 +113,8 @@
fragment ALPHA      :   ('a'..'z'|'A'..'Z');
fragment DIGIT      :   ('0'..'9');
fragment NONZERO_DIGIT   :   ('1'..'9');
fragment HEXDIGIT   :   (DIGIT | 'a'..'f' | 'A'..'F');
fragment OCTDIGIT   :   ('0'..'7');
fragment BINDIGIT   :   ('0' | '1');