在C++ 11中,这是现在有效的语法:
vector<vector<float>> MyMatrix;
Run Code Online (Sandbox Code Playgroud)
而以前,它必须这样写(注意空格):
vector<vector<float> > MyMatrix;
Run Code Online (Sandbox Code Playgroud)
我的问题是标准用于允许第一个版本的修复是什么?
它可以像制作>令牌一样简单而不是>>吗?如果不是这样,那么这种方法有什么用呢?
我认为这些表格myTemplate< x>>3 >不是问题,因为你可以通过这样做来消除它们的歧义myTemplate<(x>>3)>.
我对Java规范应该如何标记这个代码感到困惑:
ArrayList<ArrayList<Integer>> i;
Run Code Online (Sandbox Code Playgroud)
规范说:
每个步骤都使用尽可能长的翻译,即使结果最终没有形成正确的程序而另一个词汇翻译也会如此.
据我了解,应用"最长匹配"规则会产生令牌:
哪个不会解析.但当然这个代码解析得很好.
这种情况的正确规范是什么?
这是否意味着正确的词法分析器必须无上下文?使用常规词法分析器似乎不可能.