⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parser.grm

📁 prolog,人工智能推理程序,运行环境prolog
💻 GRM
字号:
productions
  PARSER	= SECTION*

  SECTION	= userdefined_ productions_ PRODNAMES -> userprods_(PRODNAMES),
		  userdefined_ domains_ PRODNAMES -> userdoms_(PRODNAMES),
		  productions_ PRODUCTIONS	 -> productions_(PRODUCTIONS)

  PRODUCTIONS	= PRODUCTION+

  PRODUCTION	= upper(STRING):CURSOR equal PRODBODY	-> p(PRODNAME,CURSOR,PRODBODY)

  PRODBODY	= upper(STRING):CURSOR STAR_PLUS SEPARATOR
				-> list(PRODNAME,CURSOR,STAR_PLUS,SEPARATOR),
		  PRODGROUPS			-> groups(PRODGROUPS)

  STAR_PLUS	= star				-> star,
		  plus				-> plus

  SEPARATOR	= separator_ id(STRING)		-> sep(STRING),
						-> none

  PRODGROUPS	= PRIORGROUP+ separator priorsepp

  PRIORGROUP	= SINGPROD+ separator comma

  SINGPROD	= ASSOC GRAMTOKL arrow:CURSOR TERM -> prod(ASSOC,GRAMTOKL,CURSOR,TERM)

  ASSOC		= rightassoc_:CURSOR		-> right(CURSOR),
						-> left

  GRAMTOKL	= GRAMTOK*

  GRAMTOK	= upper(STRING):CURSOR		-> prodname(PRODNAME,CURSOR),
		  TOKK CURSORDEMAND		-> tok(TOKK,CURSORDEMAND)

  CURSORDEMAND	= colon PRODNAME		-> curdemand(PRODNAME),
						-> none

  TOKK		= id(STRING):CURSOR lpar PRODNAMES rpar -> cmp(STRING,CURSOR,PRODNAMES),
		  id(STRING):CURSOR			-> name(STRING,CURSOR)

  TERM		= upper(STRING):CURSOR			-> dom(PRODNAME,CURSOR),
		  id(STRING):CURSOR lpar PRODNAMES rpar -> term(STRING,CURSOR,PRODNAMES),
		  id(STRING):CURSOR			-> name(STRING,CURSOR)

  PRODNAME	= upper(STRING)			-> PRODNAME

  PRODNAMES	= PRODNAME+ separator comma

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -