Ocamlex中的yytext等价物
我的常规(非ocaml)yacc文件中包含以下内容:Ocamlex中的yytext等价物,ocaml,yacc,lex,Ocaml,Yacc,Lex,我的常规(非ocaml)yacc文件中包含以下内容: wsorword : WS { strcpy($$, yytext); } | WORD { strcpy($$, yytext); }
wsorword : WS
{
strcpy($$, yytext);
}
| WORD
{
strcpy($$, yytext);
}
;
如何在ocamlex/ocamlyacc中处理WS或WORD返回的lexeme?好的,您的yacc代码使用的是lex提供的全局变量。OCaml并不禁止全局变量,但它们与编写代码的功能方式不一致。如果您将词法缓冲区设置为全局名称
!lexbufr
(比如),手册上说你可以通过调用Lexing.lexeme来获取最新的lexeme!lexbufr
。请注意,我自己还没有尝试过这个方法。好的,您的yacc代码使用的是lex提供的全局变量。OCaml并不禁止全局变量,但它们与编写代码的功能方式不一致。如果您将词法缓冲区设置为全局名称!lexbufr
(比如),手册上说你可以通过调用Lexing.lexeme来获取最新的lexeme!lexbufr
。请注意,我自己还没有尝试过这一点。我会在mly
文件中将我的令牌定义为:
%token<string> WORD WS
其中,ws
和word
当然是各自令牌的regexp
最后,语法规则变成:
wsorword:
WS { $1 }
| WORD { $1 }
;
我会在
mly
文件中将我的令牌定义为:
%token<string> WORD WS
其中,ws
和word
当然是各自令牌的regexp
最后,语法规则变成:
wsorword:
WS { $1 }
| WORD { $1 }
;
强制性MunHIR注释:您应该考虑使用与
ocamlex
@gasche一起使用谢谢,我会研究一下。