我一直试图找出如何解决一些减少冲突的问题。我环顾四周,找到了修复它的不同主题,但似乎无论我做什么,我似乎无法找到解决这些问题的方法。
我正在尝试为Angel Script编写一个流行的脚本引擎的语法类 我从解析器类中获得了BNF语法。 你可以在这里找到语言参考 http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script.html
在每个规则的课程中,我添加了一个关于我试图复制的BNF语法的评论。目前我实际上并没有使用我定义的关键字。一旦我能够无冲突地工作,我会回去尝试清理它。 这是我的课 http://pastebin.com/FydCTqmU
您应该能够创建一个Dll并使用语法浏览器运行它,您将看到所有错误。似乎大多数错误都来自同一个问题,所以我想也许一旦我能解决这个问题,它几乎可以解决所有问题。
编辑:这是主要问题。这是主要的脚本状态,我知道它分解成许多不同的规则,但我这样做,所以我可以尝试解决我仍然没有运气的问题。
编辑:我尝试压缩我的代码,希望通过减少 - 减少错误,但它似乎保持完全相同,但只是看起来更混乱。如果有人能帮助我做对,我会更乐意通过paypal向他们发送几百美元。我只是放弃了已经超过一周的时间。我的电子邮件是Anth0ny229@live.com。状态S0(不足) 减少 - 减少输入冲突:const identifier void int8 int16 int32 int64 int uint8 uint16 uint32 uint64 uint float double bool? auto :: 转移项目:
script' -> ·script EOF
script -> ·script_0_list
script_0_list -> ·script_0+
script_0+ -> ·script_0+ script_0
script_0+ -> ·script_0
script_0 -> ·import
import -> ·import type import_0_opt identifier paramlist from string ;
script_0 -> ·enum
enum -> ·enum_0_opt enum identifier { identifier enum_1_opt enum_2_list }
enum_0_opt -> ·shared
script_0 -> ·typedef
typedef -> ·typedef primtype identifier ;
script_0 -> ·class
class -> ·class_0_list class identifier class_1_opt { class_2_list }
class_0_list -> ·class_0+
class_0+ -> ·class_0+ class_0
class_0+ -> ·class_0
class_0 -> ·shared
class_0 -> ·abstract
class_0 -> ·final
script_0 -> ·mixin
mixin -> ·mixin class
script_0 -> ·interface
interface -> ·interface_0_opt interface identifier interface_1_opt { interface_2_list }
interface_0_opt -> ·shared
script_0 -> ·funcdef
funcdef -> ·funcdef type funcdef_0_opt identifier paramlist ;
script_0 -> ·virtprop
virtprop -> ·virtprop_0_opt type virtprop_1_opt identifier { virtprop_2_list }
virtprop_0_opt -> ·private
virtprop_0_opt -> ·protected
script_0 -> ·func
func -> ·func_0_opt func_1_opt identifier paramlist func_2_opt func_3_list statblock
func_0_opt -> ·private
func_0_opt -> ·protected
func_0_opt -> ·shared
script_0 -> ·var
var -> ·var_0_opt type identifier var_1_opt var_2_list ;
var_0_opt -> ·private
var_0_opt -> ·protected
script_0 -> ·namespace
namespace -> ·namespace identifier { script }
script_0 -> ·;
减少项目:
script_0_list -> · [EOF]
enum_0_opt -> · [enum]
class_0_list -> · [class]
interface_0_opt -> · [interface]
virtprop_0_opt -> · [const identifier void int8 int16 int32 int64 int uint8 uint16 uint32 uint64 uint float double bool ? auto ::]
func_0_opt -> · [const ~ identifier void int8 int16 int32 int64 int uint8 uint16 uint32 uint64 uint float double bool ? auto ::]
var_0_opt -> · [const identifier void int8 int16 int32 int64 int uint8 uint16 uint32 uint64 uint float double bool ? auto ::]
过渡:
script->S1, script_0_list->S2, script_0+->S3, script_0->S4, import->S5, import->S6, enum->S7, enum_0_opt->S8, shared->S9, typedef->S10, typedef->S11, class->S12, class_0_list->S13, class_0+->S14, class_0->S15, abstract->S16, final->S17, mixin->S18, mixin->S19, interface->S20, interface_0_opt->S21, funcdef->S22, funcdef->S23, virtprop->S24, virtprop_0_opt->S25, private->S26, protected->S27, func->S28, func_0_opt->S29, var->S30, var_0_opt->S31, namespace->S32, namespace->S33, ;->S34