相关疑难解决方法(0)

在yacc中的Lisp语法

我正在尝试构建一个Lisp语法.容易,对吗?显然不是.

我提出这些输入并收到错误......

( 1 1)
23 23 23 
ui ui
Run Code Online (Sandbox Code Playgroud)

这是语法......

%%
sexpr: atom                 {printf("matched sexpr\n");}
    | list
    ;
list: '(' members ')'       {printf("matched list\n");}
    | '('')'                {printf("matched empty list\n");}
    ;
members: sexpr              {printf("members 1\n");}
    | sexpr members         {printf("members 2\n");}
    ;
atom: ID                    {printf("ID\n");}
    | NUM                   {printf("NUM\n");}
    | STR                   {printf("STR\n");}
    ;
%%
Run Code Online (Sandbox Code Playgroud)

就像我所知,我需要一个非终端定义为一个程序,整个解析树可以挂起.但我尝试了它似乎没有用.

编辑 - 这是我的"顶级终端"方法:

program: slist;

slist: slist sexpr | sexpr;
Run Code Online (Sandbox Code Playgroud)

但它允许以下问题:

( 1 1 
Run Code Online (Sandbox Code Playgroud)

Edit2:FLEX代码是......

%{
    #include <stdio.h>
    #include "a.yacc.tab.h"
    int linenumber;
    extern int yylval;
%}
%% …
Run Code Online (Sandbox Code Playgroud)

lisp grammar yacc

20
推荐指数
2
解决办法
1万
查看次数

标签 统计

grammar ×1

lisp ×1

yacc ×1