[英]How open files with Peg.js?
我怎樣才能用我的語言閱讀文件?
我試圖了解語言是如何工作的。 我想知道如何使用Peg.js
創建一個簡單的語法來讀取文件。
在 Python 中它是這樣的
f= open("testfile.txt","w+")
Peg.js 中的語法示例
{
var keywords = ["f=", "open"];
}
Expression =
word:$(Word) { return { word: word } } /
keyword:$(Keyword) { return { keyword: keyword } }
// Word will match everything except "f" and "open"
Word = word:$([a-zA-Z]+) &{ return !keywords.includes(word) }
Keyword = [a-zA-Z]+
start
= f open symbol
open
= attribute:',"w+"'? __ { return write; }
= attribute:'include'? __ { return include; }
include
= include : "'_ exp:[a-zA-Z]+ _'" _ { return include; }
symbol
= '("' _ exp:[a-zA-Z]+ _ '")' { return [ exp.join('') ]; }
// optional whitespace
_ = [ \t\r\n]*
// mandatory whitespace
__ = [ \t\r\n]+
但我收到此錯誤:
第 21 行,第 3 列:應為“/”、“;”、注釋、輸入結束、行結束、標識符或空格,但找到了“=”。
示例: Peg.js
f= open("testfile.txt","w+")
您收到語法錯誤,因為您的open
定義包含兩個=
s。 我假設您希望第二個成為/
。 然后open
將匹配字符串,"w+"
(或什么都不匹配)或include
。
不過,這並不是您代碼中的唯一問題。 以下是我注意到的其他一些:
Expression
作為您的開始規則(默認為先),則只有前三個規則很重要。 如果您使用start
作為開始規則,則前三個規則根本無關緊要。"f="
,然后檢查匹配[a-zA-Z]+
的字符串是否在該數組中。 但是f=
與該模式不匹配,因此將它放在數組中毫無意義。start
定義為f open symbol
,但f
未在任何地方定義。"'_ exp:[a-zA-Z]+ _'"
匹配文字字符串'_ exp:[a-zA-Z]+ _'
。 這幾乎肯定不是你想要的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.