norminette-mcp
Version:
MCP server for 42 School norminette coding standard checker
74 lines (73 loc) • 1.51 kB
JavaScript
export class Token {
type;
pos;
value;
constructor(type, pos, value) {
this.type = type;
this.pos = pos;
this.value = value;
}
get length() {
return this.value?.length || 0;
}
get lineno() {
return this.pos.line;
}
get column() {
return this.pos.column;
}
toString() {
return this.value ? `<${this.type}=${this.value}>` : `<${this.type}>`;
}
}
// Token types based on norminette lexer
export const TokenType = {
// Keywords
INT: 'INT',
CHAR: 'CHAR',
VOID: 'VOID',
CONST: 'CONST',
STATIC: 'STATIC',
STRUCT: 'STRUCT',
ENUM: 'ENUM',
TYPEDEF: 'TYPEDEF',
IF: 'IF',
ELSE: 'ELSE',
WHILE: 'WHILE',
FOR: 'FOR',
RETURN: 'RETURN',
// Operators
ASSIGN: 'ASSIGN',
PLUS: 'PLUS',
MINUS: 'MINUS',
MULT: 'MULT',
DIV: 'DIV',
MODULO: 'MODULO',
// Brackets
LBRACE: 'LBRACE',
RBRACE: 'RBRACE',
LPARENTHESIS: 'LPARENTHESIS',
RPARENTHESIS: 'RPARENTHESIS',
LBRACKET: 'LBRACKET',
RBRACKET: 'RBRACKET',
// Punctuation
SEMI_COLON: 'SEMI_COLON',
COMMA: 'COMMA',
DOT: 'DOT',
// Literals
IDENTIFIER: 'IDENTIFIER',
CONSTANT: 'CONSTANT',
STRING: 'STRING',
// Whitespace
SPACE: 'SPACE',
TAB: 'TAB',
NEWLINE: 'NEWLINE',
// Preprocessor
HASH: 'HASH',
INCLUDE: 'INCLUDE',
DEFINE: 'DEFINE',
// Comments
COMMENT: 'COMMENT',
// Special
EOF: 'EOF'
};