Comments (16)
Внезапно, в грамматике тоже только int. Я пофикшу в парсере, а ты посмотри грамматику - всё ли там ок?
from lens.
Исправлено. Тикет не закрываю - вдруг ещё что-то найдём.
from lens.
Не парсится такая, вполне вроде бы легальная строка:
1.GetHashCode ()
А вот такая - вполне:
(1).GetHashCode ()
Посмотри пожалуйста, почему так происходит. Может быть, бага в грамматике?
P. S. Строчка ниже не только парсится, но уже работает :)
from lens.
lvalue = [ type "::" ] identifier { accessor_expr } | "(" expr ")" accessor_expr { accessor_expr }
Как видишь, для применения accessor_expr
нужно брать expr
в скобки. Я бы не стал сейчас это менять - кажется, без этого у нас могут возникнуть какие-нибудь проблемы.
Точно. Убрал в парсере скобки и получил StackOverflowException
на этапе парсинга.
@impworks, считаю такое изменение лишним, раз уж оно валит парсер. Для lens 2.0 мы, может, запилим самодельный парсер или что-нибудь в этом роде, а пока что не вижу смысла вносить такие ломающие изменения.
from lens.
Попробуй такие изменения в грамматике:
lvalue = [ type "::" ] identifier { accessor_expr } | atomar_expr accessor_expr { accessor_expr }
value_expr = atomar_expr | lvalue
atomar_expr = literal | type_operator_expr | "(" expr ")"
from lens.
Охххх, запилил-таки эти изменения. Было страшно, но я выдержал! Написан тест, грамматика изменена в соответствии с твоим предложением. Единственное - пришлось поменять порядок узлов в value_expr
(из-за чего и были проблемы).
from lens.
Сначала lvalue
? А почему так стало лучше?
from lens.
Видимо, при противоположном расположении узлов в парсере получался какой-то ненужный цикл, который он не мог правильно разорвать. У меня есть идея, почему это может происходить и как с этим бороться, но без особой надобности это средство применять бы не хотелось - может сильно сказаться на производительности.
from lens.
Нашел еще один баг. В тестах BareLambda
и ParametricLambda
создается FunctionNode
- видимо, я забыл это поменять, когда проводил рефакторинг. Должна создаваться LambdaNode
.
from lens.
Не парсится следующий, на мой взгляд, корректный код:
fun test -> 10
test ()
Почему?
from lens.
В тестах BareLambda и ParametricLambda создается FunctionNode
Исправлено: 855be00. Оказалось, что лямбды есть ещё в паре тестов - там тоже поправил.
from lens.
Не парсится следующий, на мой взгляд, корректный код
Была проблема в грамматике - после funcdef
не ожидался перевод строки. Было:
funcdef = "fun" identifier func_params "->" block
Стало:
funcdef = "fun" identifier func_params "->" block NL
Добавил тест, починил грамматику и парсер. 9c415f3.
from lens.
Не было бы правильнее требовать от самого block, чтобы он заканчивался
переносом строки или EOF? Чтобы еще где-нибудь не забыть.
from lens.
Дело в том, что там не только block
, но и local_expr
, от которого
требовать новой строки нелогично. Сначала я так и попробовал, но отвалился
код с однострочным if-then-else
.
from lens.
Почему-то не парсятся операторы <=
и >=
.
См. тест OverloadedOperators
.
from lens.
Была проблема в грамматике и парсере, пофикшено: 96528e0.
from lens.
Related Issues (20)
- Операции над функциями
- Мульти-объявление неинициализированных переменных HOT 1
- Ошибка в грамматике
- Интерфейс контекстно-зависимой типизации
- Ошибка при сохранении сборки - файл занят
- Проблема с тестами Translations HOT 1
- Поддержка атрибута Obsolete
- Поддержка Expression<T>
- Fix continuous integration
- Grammar file gets included after package installing HOT 2
- RegisterFunction doesn't seem to work HOT 1
- Ошибка с замыканием в цикле
- Bad IL format HOT 1
- Verbatim strings
- Наведение порядка в коде HOT 1
- LE3063: Only public, static, non-generic methods can be imported! HOT 4
- Улучшение для вывода типов
- Портирование на .NET Core HOT 4
- Properly detect System.Private library
- RegexNamedGroupsTryParseNoThrow test doesn't work
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from lens.