Main program: IntelASM_Program
IntelASM syntax:
| Count | Terminals: | |
| 34 | IntelASM_Comment: ; or // comment to end of line | |
| IntelASM_CommentToEndOfLine: comment to end of line | ||
| IntelASM_Define_Definition: An identifier | ||
| 118 | IntelASM_EndOfLine: End of line | |
| IntelASM_HexNumber: A hex number | ||
| 8 | IntelASM_Identifier_Reference: An identifier | |
| 9 | IntelASM_Label_Definition: An identifier | |
| 42 | IntelASM_Label_Reference: An identifier | |
| 16 | IntelASM_Literal: quotes:'" escape:none doubled:no multiline:no | |
| IntelASM_Macro_Definition: An identifier | ||
| 20 | IntelASM_Number: exponent_chars:none suffix_chars:none trailing_period:no ignore_char:none | |
| Count | Statistics(*) | Tokens: |
| IntelASM_CpuDirective: "cpu" IntelASM_CPUValue* | ||
| | IntelASM_CPUValue: ("MMX"|"SSE"|"SSE2"|"SSE3"|"SSSE3") | ||
| IntelASM_DefineDirective: '%' "define" IntelASM_Define_Definition [IntelASM_Identifier_Reference] | ||
| 1 | all all all all | IntelASM_EquDirective: IntelASM_Label_Definition [':'] "EQU" IntelASM_Expression |
| 1 | all all | IntelASM_GlobalDirective: "GLOBAL" IntelASM_Identifier_Reference |
| IntelASM_IncludeDirective: ['%'] "include" IntelASM_Filename | ||
| | IntelASM_Filename: (IntelASM_BareFilename | IntelASM_Literal) | ||
| | | IntelASM_BareFilename: IntelASM_Identifier_Reference* | ||
| IntelASM_ListDirective: '.' ("list"|"xlist") | ||
| IntelASM_MacroDirective: '%' "macro" IntelASM_Macro_Definition IntelASM_Number IntelASM_EndOfLine IntelASM_Line* IntelASM_EndMacro | ||
| | IntelASM_EndMacro: '%' "endmacro" | ||
| 2 | all all | IntelASM_SectionDirective: ("SECTION"|"SECTION_TEXT") [(".data"|".rodata"|".text")] |
| IntelASM_TitleDirective: "TITLE" IntelASM_CommentToEndOfLine | ||
| 1 | all all all | IntelASM_AdditiveExpression: IntelASM_Expression ("+"|"-") IntelASM_Expression |
| 1 | all all all | IntelASM_Brackets: '[' IntelASM_Expression ']' |
| IntelASM_BytePtr: "BYTE" "PTR" IntelASM_Expression | ||
| 1 | all | IntelASM_Dollar: '$' |
| IntelASM_DwordPtr: "DWORD" "PTR" '[' IntelASM_Expression ']' | ||
| IntelASM_MultiplicativeExpression: IntelASM_Expression ("*") IntelASM_Expression | ||
| 6 | all | IntelASM_RegisterExpr: IntelASM_Register |
| 6 | all | IntelASM_VariableExpr: IntelASM_Identifier_Reference |
| 38 | all all | IntelASM_CALL: "CALL" IntelASM_Label_Reference |
| 2 | all all all all | IntelASM_CMP: "CMP" IntelASM_Register ',' IntelASM_Expression |
| 1 | none all 3.00 | IntelASM_DB: [IntelASM_DBtimes] "DB" IntelASM_Expression* |
| | IntelASM_DBtimes: "TIMES" IntelASM_Number | ||
| IntelASM_DQ: "DQ" IntelASM_Expression* | ||
| 4 | all all | IntelASM_JMP: ("JC"|"JE"|"JG"|"JGE"|"JL"|"JLE"|"JMP"|"JNE"|"JNZ"|"JZ") IntelASM_Label_Reference |
| 2 | all | IntelASM_NoArgs: ("CLD"|"LODSB"|"MOVSB"|"NOP"|"RET"|"STD"|"STOSB") |
| 2 | all all | IntelASM_OneArg: ("DEC"|"DIV"|"INC"|"MUL"|"NEG"|"POP"|"PUSH"|"REP"|"REPZ"|"SETZ") IntelASM_Register |
| IntelASM_REPNE: "REPNE" "SCASB" | ||
| 2 | all | IntelASM_SysCall: "SYSCALL" |
| 43 | all all all all | IntelASM_TwoArgs: ("ADD"|"AND"|"LEA"|"MOV"|"MOVSX"|"MOVZX"|"OR"|"SHL"|"SHR"|"SUB"|"TEST"|"XOR") IntelASM_Variable ',' IntelASM_Expression |
| 4 | all all | IntelASM_Directive: IntelASM_DirectiveList IntelASM_EndOfLine |
| 4 | (none | none | 25% | 25% | none | none | none | 50% | none) | | IntelASM_DirectiveList: (IntelASM_CpuDirective | IntelASM_DefineDirective | IntelASM_EquDirective | IntelASM_GlobalDirective | IntelASM_IncludeDirective | IntelASM_ListDirective | IntelASM_MacroDirective | IntelASM_SectionDirective | IntelASM_TitleDirective) |
| 51 | (none | 39% | 31% | 12% | 12% | 2% | none | none | 2% | none | 2%) | IntelASM_Expression: (IntelASM_HexNumber | IntelASM_Number | IntelASM_Literal | IntelASM_RegisterExpr | IntelASM_VariableExpr | IntelASM_Brackets | IntelASM_BytePtr | IntelASM_DwordPtr | IntelASM_Dollar | IntelASM_MultiplicativeExpression | IntelASM_AdditiveExpression) |
| 94 | all 22% all | IntelASM_Instruction: IntelASM_RegularInstruction [IntelASM_Comment] IntelASM_EndOfLine |
| 94 | (40% | 2% | 1% | none | 4% | 2% | 2% | 46% | none | 2%) | | IntelASM_RegularInstruction: (IntelASM_CALL | IntelASM_CMP | IntelASM_DB | IntelASM_DQ | IntelASM_JMP | IntelASM_NoArgs | IntelASM_OneArg | IntelASM_TwoArgs | IntelASM_REPNE | IntelASM_SysCall) |
| 8 | all all | IntelASM_Label: IntelASM_Label_Definition ':' |
| 1 | 26.00 | IntelASM_Program: IntelASM_Line* |
| 139 | (14% | 9% | 3% | 68% | 6%) | | IntelASM_Line: (IntelASM_EndOfLine | IntelASM_Comment | IntelASM_Directive | IntelASM_Instruction | IntelASM_Label) |
| 52 | all | IntelASM_Register: ("EAX"|"EBX"|"ECX"|"EDX"|"ESI"|"EDI"|"EBP"|"ESP"|"RAX"|"RBX"|"RCX"|"RDX"|"R8"|"R9"|"R10"|"CS"|"DS"|"SS"|"ES"|"FS"|"GS"|"AH"|"AL"|"BH"|"BL"|"CH"|"CL"|"DH"|"DL"|"AX"|"BX"|"CX"|"DX"|"BP"|"SI"|"DI"|"SP"|"RDI"|"RSI") |
| 43 | (none | 5% | 93% | 2%) | IntelASM_Variable: (IntelASM_Brackets_Address | IntelASM_Brackets_Register | IntelASM_Register | IntelASM_Identifier_Reference) |
| | IntelASM_Brackets_Address: '[' IntelASM_Identifier_Reference ']' | ||
| 2 | all all all | | IntelASM_Brackets_Register: '[' IntelASM_Register ']' |
Terminals = 11 (instances=247)
Tokens = 44 (instances=605)
(*) Statistics are shown in the same order as the Tokens.
Percentages are rounded; 'all' and 'none' mean 100% and 0% before rounding.
For lists, it shows the average number of occurrences, excluding empty lists.