So you can see in the example above that the AST for a WhileStatement 翻訳 - So you can see in the example above that the AST for a WhileStatement 中国語言う方法

So you can see in the example above

So you can see in the example above that the AST for a WhileStatement looks kind of like this (excluding that expression gibberish for clarity):
If you were to add curly braces around the call to buz.doSomething()and click "Go" again, you'd see that the AST would change a bit. It'd look like this:
WhileStatement
Expression
Statement
Block
BlockStatement
Statement
StatementExpression

Ah ha! We see that the curly braces add a couple more AST nodes - a Block and a BlockStatement. So all we have to do is write a rule to detect a WhileStatement that has a Statement that's not followed by a Block, and we've got a rule violation.

By the way, all this structural information - i.e., the fact that a Statement may be followed a Block - is concisely defined in the EBNF grammar. So, for example, the Statement definition looks like this:
void Statement() :
{}
{
LOOKAHEAD( { isNextTokenAnAssert() } ) AssertStatement()
| LOOKAHEAD(2) LabeledStatement()
| Block()
| EmptyStatement()
| StatementExpression() ";"
| SwitchStatement()
| IfStatement()
| WhileStatement()
| DoStatement()
| ForStatement()
| BreakStatement()
| ContinueStatement()
| ReturnStatement()
| ThrowStatement()
| SynchronizedStatement()
| TryStatement()
}
0/5000
ソース言語: -
ターゲット言語: -
結果 (中国語) 1: [コピー]
コピーしました!
所以你可以看到上面的示例中为 WhileStatement AST 看起来有点像这个 (不包括为清楚起见,表达胡言乱语):如果你是添加大括号对 buz.doSomething () 的调用,并再次单击"转到",你会看到 AST 会有点改变。看起来会像这样:WhileStatement表达式声明块BlockStatement声明StatementExpression啊哈哈 !我们看到的大括号添加一对夫妇更多的 AST 节点-块和 BlockStatement。因此,所有我们要做是写一个规则来检测已不跟着一个块,声明的 WhileStatement 和我们有违反规则的行为。顺便问一下,这个结构的信息 — — 即事实的声明可能是跟着一个块 EBNF 语法中简要定义。因此,例如,语句定义看起来像这样:无效的 Statement():{}{预测先行 ({isNextTokenAnAssert()}) AssertStatement()|LOOKAHEAD(2) LabeledStatement()|Block()|EmptyStatement()|StatementExpression()";"|SwitchStatement()|IfStatement()|WhileStatement()|DoStatement()|ForStatement()|BreakStatement()|ContinueStatement()|ReturnStatement()|ThrowStatement()|SynchronizedStatement()|TryStatement()}
翻訳されて、しばらくお待ちください..
結果 (中国語) 3:[コピー]
コピーしました!
所以你可以看到在上面的例子中,一个whilestatement AST看起来像这个(不包括表达清晰
胡言乱语):如果你在调用布斯加花括号()。然后单击“走”了,你会发现AST会改变一点。它会看起来像这样:
whilestatement
表达
声明

blockstatement
声明
statementexpression

啊啊啊啊啊!我们看到,大括号加几AST节点-一块和blockstatement。所以我们要做的是一个规则来检测whilestatement已经声明,这不是跟着一块写,我们已经有了一个违反规则。

的方式,所有这些结构信息-即,事实上,一个语句可以跟着一块简单的EBNF语法定义。所以,例如,语句定义看起来像这样:
无效statement():
{ } {

前瞻({ isnexttokenanassert() })assertstatement()
|先行(2)labeledstatement()
| block()
| emptystatement()
| statementexpression()”;“
| switchstatement()
| ifstatement()
| whilestatement()
| dostatement()
| forstatement()
| breakstatement()
| continuestatement()
| returnstatement()
| throwstatement()
| synchronizedstatement()
| trystatement()
}
翻訳されて、しばらくお待ちください..
 
他の言語
翻訳ツールのサポート: アイスランド語, アイルランド語, アゼルバイジャン語, アフリカーンス語, アムハラ語, アラビア語, アルバニア語, アルメニア語, イタリア語, イディッシュ語, イボ語, インドネシア語, ウイグル語, ウェールズ語, ウクライナ語, ウズベク語, ウルドゥ語, エストニア語, エスペラント語, オランダ語, オリヤ語, カザフ語, カタルーニャ語, カンナダ語, ガリシア語, キニヤルワンダ語, キルギス語, ギリシャ語, クメール語, クリンゴン, クルド語, クロアチア語, グジャラト語, コルシカ語, コーサ語, サモア語, ショナ語, シンド語, シンハラ語, ジャワ語, ジョージア(グルジア)語, スウェーデン語, スコットランド ゲール語, スペイン語, スロバキア語, スロベニア語, スワヒリ語, スンダ語, ズールー語, セブアノ語, セルビア語, ソト語, ソマリ語, タイ語, タガログ語, タジク語, タタール語, タミル語, チェコ語, チェワ語, テルグ語, デンマーク語, トルクメン語, トルコ語, ドイツ語, ネパール語, ノルウェー語, ハイチ語, ハウサ語, ハワイ語, ハンガリー語, バスク語, パシュト語, パンジャブ語, ヒンディー語, フィンランド語, フランス語, フリジア語, ブルガリア語, ヘブライ語, ベトナム語, ベラルーシ語, ベンガル語, ペルシャ語, ボスニア語, ポルトガル語, ポーランド語, マオリ語, マケドニア語, マラガシ語, マラヤーラム語, マラーティー語, マルタ語, マレー語, ミャンマー語, モンゴル語, モン語, ヨルバ語, ラオ語, ラテン語, ラトビア語, リトアニア語, ルクセンブルク語, ルーマニア語, ロシア語, 中国語, 日本語, 繁体字中国語, 英語, 言語を検出する, 韓国語, 言語翻訳.

Copyright ©2025 I Love Translation. All reserved.

E-mail: