簡體   English   中英

使用 Ragel 從 ES6 模板文本中提取標記

[英]Extracting tokens out of ES6 template literals with Ragel

JavaScript 包含以下語法:

`hello ${name}`

我想知道 Ragel 機器如何拆分上面的語法。 在我看來,右花括號的類型取決於解析狀態。 例如,在下面的代碼中,大括號是字符串標記的一部分,因為${標記不存在:

`hello name}`

最后,當您考慮在變量表達式本身中也可以找到正確的卷曲時,它變得更加棘手,即:

`hello ${() => { return name }()}`

如何使用 Ragel 實現類似的上下文相關語法?

`` 內部的語法通常不是您用詞法分析器處理的東西。 最好將它作為文字文本和/或標記序列發送到您的解析器。 所以你會發送“`”作為開頭,“hello”作為一些文字文本,然后是標記“(”,“)”等。要知道何時停止並返回文字文本,您要么需要解析器的一些反饋到您的掃描儀,或在掃描儀內部您需要平衡parens。

注意我從來沒有真正為 javascript 制作過解析器,只是繼續你上面提供的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM