При обнаружении токенов с помощью JFlex символы в комментарии не должны генерировать токены, а должны ⇐ JAVA
-
Anonymous
При обнаружении токенов с помощью JFlex символы в комментарии не должны генерировать токены, а должны
При создании токенов из текстового документа с использованием этого кода:
пакет codigo; импортировать статические codigo.Tokens.; %% %класс Лексер %тип токенов L=[a-zA-Z_]+ Д=[0-9]+ espacio=[ ,\t,\r,\n]+ %{ публичная строковая лексема; %} Комментарий = {ТрадиционныйКомментарий} ТрадиционныйКомментарий = "/" [^] ~"/" | "/" ""+ "/" %% интервал {возврат INT;} если {возврат ЕСЛИ;} еще {вернуться ИНАЧЕ;} пока {возврат ПОКА;} пусть {возвращает LET;} положить {вернуть PUT;} вернуть {вернуть ВОЗВРАТ;} логическое значение {возврат BOOLEAN;} сделать {вернуть DO;} получить {вернуть GET;} функция {возврат ФУНКЦИИ;} недействительность {возврат VOID;} строка {возврат СТРОКИ;} {espacio} {/* Игнорировать /} {Комментарий} { / игнорировать / } "=" {вернуть ОПИГУАЛ;} "+" {возврат ОПСУМА;} "-" {возврат ОПРЕСТА;} "" {возврат OPMUL;} "/" {возврат OPDIV;} "(" {return PARENTESISABIERTO;} ")" {return PARENTESISCERRADO;} "{" {return ЛЛАВАБЬЕРТА;} "}" {вернуть ЛЛАВЕСЕРРАДА;} "," {возврат КОМА;} ";" {возвращение ПУНТОЙКОМА;} "%=" {return RESTOIGUAL;} {L}({L}|{D})* {lexeme=yytext(); вернуть идентификатор;} ("(-"{D}+")"|{D}+) {lexeme=yytext(); вернуть ЭНТЕРО;} . { /* Игнорировать другие символы в состоянии по умолчанию */ } он обнаруживает многострочные комментарии как токены, а не все как комментарий. Я также хотел бы обнаружить строки символов, генерируемые при обнаружении символов между "", но я столкнулся с той же проблемой, они обнаруживаются отдельно
р>
При создании токенов из текстового документа с использованием этого кода:
пакет codigo; импортировать статические codigo.Tokens.; %% %класс Лексер %тип токенов L=[a-zA-Z_]+ Д=[0-9]+ espacio=[ ,\t,\r,\n]+ %{ публичная строковая лексема; %} Комментарий = {ТрадиционныйКомментарий} ТрадиционныйКомментарий = "/" [^] ~"/" | "/" ""+ "/" %% интервал {возврат INT;} если {возврат ЕСЛИ;} еще {вернуться ИНАЧЕ;} пока {возврат ПОКА;} пусть {возвращает LET;} положить {вернуть PUT;} вернуть {вернуть ВОЗВРАТ;} логическое значение {возврат BOOLEAN;} сделать {вернуть DO;} получить {вернуть GET;} функция {возврат ФУНКЦИИ;} недействительность {возврат VOID;} строка {возврат СТРОКИ;} {espacio} {/* Игнорировать /} {Комментарий} { / игнорировать / } "=" {вернуть ОПИГУАЛ;} "+" {возврат ОПСУМА;} "-" {возврат ОПРЕСТА;} "" {возврат OPMUL;} "/" {возврат OPDIV;} "(" {return PARENTESISABIERTO;} ")" {return PARENTESISCERRADO;} "{" {return ЛЛАВАБЬЕРТА;} "}" {вернуть ЛЛАВЕСЕРРАДА;} "," {возврат КОМА;} ";" {возвращение ПУНТОЙКОМА;} "%=" {return RESTOIGUAL;} {L}({L}|{D})* {lexeme=yytext(); вернуть идентификатор;} ("(-"{D}+")"|{D}+) {lexeme=yytext(); вернуть ЭНТЕРО;} . { /* Игнорировать другие символы в состоянии по умолчанию */ } он обнаруживает многострочные комментарии как токены, а не все как комментарий. Я также хотел бы обнаружить строки символов, генерируемые при обнаружении символов между "", но я столкнулся с той же проблемой, они обнаруживаются отдельно
р>
Мобильная версия